package br.com.sisgerenciamento.relatorio;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;

import br.com.sisgerenciamento.dto.cliente.ClienteDTO;
import br.com.sisgerenciamento.dto.locacao.LocacaoDTO;
import br.com.sisgerenciamento.dto.pedido.PedidoDTO;
import br.com.sisgerenciamento.dto.produto.ProdutoDTO;
import br.com.sisgerenciamento.model.pedido.StatusPedidoEnum;
import br.com.sisgerenciamento.util.UtilActionForm;
import br.com.sisgerenciamento.utilidades.TreatDate;

public class RelatorioForm extends UtilActionForm{

	/**
	 * 
	 */
	private static final long serialVersionUID = 4447915338032857536L;
	private byte pdf[];

	
	//LOCACAO
	private String dataInicialLocacao;
	private String dataFinalLocacao;
	private String tipoLocacao;
	private ArrayList<LocacaoDTO> locacaoDTOs = new ArrayList<LocacaoDTO>();
	
	//RECEBIMENTOS
	private String dataInicialRecebimento;
	private String dataFinalRecebimento;
	private Integer situacaoRecebimento;
	private Long codClienteListagemRecebimentos;
	
	
	//PEDIDO
	private String dataInicialPedido;
	private String dataFinalPedido;
	private Long codCliente;
	private Long codProduto;
	private Long situacaoPedido;
	private String promocao;
	private ArrayList<StatusPedidoEnum> statusPedido =  StatusPedidoEnum.listar();
	private ArrayList<ClienteDTO> clientes = new ArrayList<ClienteDTO>();
	private ArrayList<ProdutoDTO> produtos = new ArrayList<ProdutoDTO>();
	private ArrayList<PedidoDTO > pedidoDTOs = new ArrayList<PedidoDTO>();
	
	public void limparForm(){
		
		pdf = null;
		
		Calendar dataInicial =  Calendar.getInstance();
		dataInicial.set(2014, 00, 01);

		dataInicialLocacao = TreatDate.formatDefaultDate(dataInicial.getTime());
		dataFinalLocacao = TreatDate.formatDefaultDate(new Date());
		tipoLocacao = null;
		locacaoDTOs =  new ArrayList<LocacaoDTO>();
		
		dataInicialPedido = TreatDate.formatDefaultDate(dataInicial.getTime());
		dataFinalPedido = TreatDate.formatDefaultDate(new Date());
		codCliente = null;
		codProduto = null;
		situacaoPedido = null;
		
		dataInicialRecebimento = TreatDate.formatDefaultDate(dataInicial.getTime());
		dataFinalRecebimento = TreatDate.formatDefaultDate(new Date());
		
		situacaoRecebimento = 1;
		codClienteListagemRecebimentos = null;
	}
	
	public byte[] getPdf() {
		return pdf;
	}

	public void setPdf(byte[] pdf) {
		this.pdf = pdf;
	}

	public String getTipoLocacao() {
		return tipoLocacao;
	}

	public void setTipoLocacao(String tipoLocacao) {
		this.tipoLocacao = tipoLocacao;
	}
	
	public ArrayList<LocacaoDTO> getLocacaoDTOs() {
		return locacaoDTOs;
	}

	public void setLocacaoDTOs(ArrayList<LocacaoDTO> locacaoDTOs) {
		this.locacaoDTOs = locacaoDTOs;
	}
	

	public String getDataInicialLocacao() {
		return dataInicialLocacao;
	}

	public void setDataInicialLocacao(String dataInicialLocacao) {
		this.dataInicialLocacao = dataInicialLocacao;
	}

	public String getDataFinalLocacao() {
		return dataFinalLocacao;
	}

	public void setDataFinalLocacao(String dataFinalLocacao) {
		this.dataFinalLocacao = dataFinalLocacao;
	}

	public String getDataInicialPedido() {
		return dataInicialPedido;
	}

	public void setDataInicialPedido(String dataInicialPedido) {
		this.dataInicialPedido = dataInicialPedido;
	}

	public String getDataFinalPedido() {
		return dataFinalPedido;
	}

	public void setDataFinalPedido(String dataFinalPedido) {
		this.dataFinalPedido = dataFinalPedido;
	}

	public ArrayList<PedidoDTO> getPedidoDTOs() {
		return pedidoDTOs;
	}

	public void setPedidoDTOs(ArrayList<PedidoDTO> pedidoDTOs) {
		this.pedidoDTOs = pedidoDTOs;
	}

	public ArrayList<ClienteDTO> getClientes() {
		return clientes;
	}

	public void setClientes(ArrayList<ClienteDTO> clientes) {
		this.clientes = clientes;
	}
	
	public Long getCodCliente() {
		return codCliente;
	}

	public void setCodCliente(Long codCliente) {
		this.codCliente = codCliente;
	}
	
	public Long getCodProduto() {
		return codProduto;
	}

	public void setCodProduto(Long codProduto) {
		this.codProduto = codProduto;
	}

	public ArrayList<ProdutoDTO> getProdutos() {
		return produtos;
	}

	public void setProdutos(ArrayList<ProdutoDTO> produtos) {
		this.produtos = produtos;
	}
	public ArrayList<StatusPedidoEnum> getStatusPedido() {
		return statusPedido;
	}

	public void setStatusPedido(ArrayList<StatusPedidoEnum> statusPedido) {
		this.statusPedido = statusPedido;
	}
	
	public Long getSituacaoPedido() {
		return situacaoPedido;
	}

	public void setSituacaoPedido(Long situacaoPedido) {
		this.situacaoPedido = situacaoPedido;
	}
	
	public String getDataInicialRecebimento() {
		return dataInicialRecebimento;
	}

	public void setDataInicialRecebimento(String dataInicialRecebimento) {
		this.dataInicialRecebimento = dataInicialRecebimento;
	}

	public String getDataFinalRecebimento() {
		return dataFinalRecebimento;
	}

	public void setDataFinalRecebimento(String dataFinalRecebimento) {
		this.dataFinalRecebimento = dataFinalRecebimento;
	}
	
	public Integer getSituacaoRecebimento() {
		return situacaoRecebimento;
	}

	public void setSituacaoRecebimento(Integer situacaoRecebimento) {
		this.situacaoRecebimento = situacaoRecebimento;
	}

	public String getPromocao() {
    	return promocao;
    }

	public void setPromocao( String promocao ) {
    	this.promocao = promocao;
    }
	
	public Long getCodClienteListagemRecebimentos() {
		return codClienteListagemRecebimentos;
	}

	public void setCodClienteListagemRecebimentos(
			Long codClienteListagemRecebimentos) {
		this.codClienteListagemRecebimentos = codClienteListagemRecebimentos;
	}

	@Override
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		limparMensagem(request);
		return super.validate(mapping, request);
	}
}
